d0131e9a0a71c741ca860a0fead3e512f23e622f,platform/lang-impl/src/com/intellij/psi/impl/DebugUtil.java,DebugUtil,trackInvalidation,#PsiElement#Processor#,477
Before Change
public static void trackInvalidation(@NotNull PsiElement element, @NotNull Processor<PsiElement> callback) {
final ASTNode node = element.getNode();
if (node != null) {
node.putUserData(TRACK_INVALIDATION_KEY, callback);
}
}
After Change
synchronized (element) {
final ASTNode node = element.getNode();
if (node == null) return;
List<Pair<Object, Processor<PsiElement>>> callbacks = node.getUserData(TRACK_INVALIDATION_KEY);
if (callbacks == null) {
callbacks = new SmartList<Pair<Object, Processor<PsiElement>>>();
node.putUserData(TRACK_INVALIDATION_KEY, callbacks);
}
for (int i = 0; i < callbacks.size(); i++) {
Pair<Object, Processor<PsiElement>> pair = callbacks.get(i);